// #define print(...)
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
    if(!head || !head->next) return head;
    ListNode ans(0, head);
    auto t = &ans;
    while(t->next && t->next->next){
        auto h2 = t->next->next;    // h2 := 2
        t->next->next = h2->next;   // 1->next := 3
        h2->next = t->next;         // 2->next := 1
        t->next = h2;               // t->next := 2
        t = h2->next;               // t       := 1
        print("t=", t, "\n", "ans=", ans.next, "\n");
    }
    return ans.next;
}
};
